Add Synchronization 2 tutorial series #339
Conversation
…pics Introduce comprehensive Synchronization 2 tutorial covering modern Vulkan synchronization patterns. Add chapters on dependency anatomy, pipeline barriers, timeline semaphores, frame-in-flight architecture, async compute, transfer queues, dynamic rendering sync, host image copies, and synchronization validation. Include practical examples from Simple Engine and guidance on debugging with validation layers and interpreting VUIDs.
Update all xref links to use absolute paths prefixed with 'Synchronization/' instead of relative paths. Correct image references to use absolute paths starting with '/images/'. This ensures proper navigation between chapters and correct image rendering across the Synchronization tutorial series.
There was a problem hiding this comment.
Did a first review run and added comments to the documentation where possible.
The information presented here is great, I'm just not sure if it's the best idea to have this as a separate part of the tutorial.
Here are some random additional thoughts that we could discuss:
- This duplicates some information we already have in the tutorial and/or the guide
- https://docs.vulkan.org/guide/latest/extensions/VK_KHR_synchronization2.html
- https://docs.vulkan.org/guide/latest/synchronization_examples.html
- Dynamic rendering, frames in flight and others are already used in the base tutorial
- This is actually an issue (I see with this), as it might also make maintaining the tutorial hard(er)
- It's heavily based on the simple game engine part of the tutorial
- So it at least should come after that part of the tutorial (in the navigation)
- It should have a few more links to existing resources, esp. the spec
- It could use some more images, some chapters are text only and feel like walls of text
So my thought after reading this was "Why a separate chapter, why not integrate this into the tutorial right away?"
…tion tutorial Update all Markdown code block language identifiers from `[,c++]` to `[,cpp]` throughout the Synchronization tutorial series. Add section on identifying dedicated compute/transfer queues with code examples. Fix typo in function name reference (vkCmdPipelineBarrier2 → vk::CmdPipelineBarrier2). Add warning about eConcurrent performance impact on images. Clarify present operation binary semaphore requirement. Add note about WSI limitations with timeline semaphores. Include tip about using vkconfig for validation setup. Update section heading and VUID example number.
Introduce summary and final thoughts for the Anatomy of a Synchronization Dependency series. Add barrier types comparison table covering global memory, buffer memory, and image memory barriers with their purposes and key structures. Include navigation links to previous and next chapters in the Synchronization tutorial series.
|
The tutorial text is looking good now, but I'm not able to review the sync engine due to #387 |
|
#388 Should fix it. |
|
With the fix from #388 I can build the code for this PR, but the simple engine is stuck in an infinite loop for me and stuck at 0%:
|
|
See if the latest will fix that infinite loop. |
|
That does fix the infinite loop, but all I get is a black screen and crash shortly after. I did debug this, and it seems that it simply can't load the gltf file. I guess this is because the bistro scene is located in a different folder than the project itself. |
|
Oh, yeah, that's just a need to run from the sync2_engine directory as your working directory and not for the simple_engine directory. Maybe I should make it so you can run from either? |
|
Working directory after CMake setup is attachments\sync2_engine\build\ for me. Bistro is under attachments\simple_engine\assets Ideally, the sync2 engine will find the asset out of the box. |
|
Okay, you can now run from more places. If we get error reports about this in the future I might just set it from CMake as a macro and use one path location rather than searching for it. for now, this should work. |

with validation and advanced topics.
Introduce comprehensive Synchronization 2 tutorial covering modern Vulkan synchronization patterns. Add chapters on dependency anatomy, pipeline barriers, timeline semaphores, frame-in-flight architecture, async compute, transfer queues, dynamic rendering sync, host image copies, and synchronization validation. Include practical examples from Simple Engine and guidance on debugging with validation layers and interpreting VUIDs.